﻿Imports sonicERPDAL
Imports sonicERPinfo


Partial Public Class CadastroFornecedor
    Inherits System.Web.UI.Page
    Dim dal As New fornecedorDAL
    Dim entidade As New fornercedorInfo
    Dim lista As New List(Of String)
    Dim idfornecedor As Integer
    Dim idusuario As Integer
    Shared S As String
    Dim valida As New Validacao
    Dim util As New Util

#Region "Sub e Funções"
    Public Sub gettipofornecedor()
        rdbtipofornecedor.Items.Add(New ListItem("JURIDICA", 0))
        rdbtipofornecedor.Items.Add(New ListItem("FISICA", 1))
    End Sub

    Public Enum Tipofornecedor
        jurica = 0
        fisica = 1
    End Enum
    Public Sub editar(ByVal sender As Object, ByVal e As System.EventArgs)
        entidade.id = Convert.ToInt32(Request.QueryString("id"))
        dal.Pesquisar(entidade, lista)
        idfornecedor = Convert.ToInt32(lista(0).ToString)
        idusuario = Convert.ToInt32(lista(1).ToString)
        txtnomefornecedor.Text = Convert.ToString(lista(2).ToString)
        If lista(3).ToString = "fisica" Then
            rdbtipofornecedor.SelectedIndex = Tipofornecedor.fisica
        Else
            rdbtipofornecedor.SelectedIndex = Tipofornecedor.jurica
        End If
        '' chamara o evento do tipo de fornecedor
        rdbtipofornecedor_SelectedIndexChanged(sender, e)
        '' not habilitar o tipo de fornecedor
        rdbtipofornecedor.Enabled = False
        txtemail.Text = Convert.ToString(lista(4).ToString)
        txttelefone.Text = Convert.ToString(lista(6).ToString)
        txtceluar.Text = Convert.ToString(lista(7).ToString)
        txtrg.Text = Convert.ToString(lista(8).ToString)
        txtcpf.Text = Convert.ToString(lista(9).ToString)
        txtcep.Text = Convert.ToString(lista(12).ToString)
        If lista(10).ToString = "ISENTO              " Then
            ckeckbutox1.Checked = True
            txtinscricaoestadual.Text = Convert.ToString(lista(10).ToString)
            txtinscricaoestadual.Enabled = False
        Else
            txtinscricaoestadual.Text = Convert.ToString(lista(10).ToString)
            txtinscricaoestadual.Enabled = True
        End If

        txtcnpj.Text = Convert.ToString(lista(11).ToString)
        txtestado.Text = Convert.ToString(lista(13).ToString)
        txtcidade.Text = Convert.ToString(lista(14).ToString)
        txtrua.Text = Convert.ToString(lista(15).ToString)
        txtnumero.Text = Convert.ToString(lista(16).ToString)
        txtcontato.Text = Convert.ToString(lista(17).ToString)
        txtbairro.Text = Convert.ToString(lista(18).ToString)


    End Sub


    Public Sub BuscaCep(ByVal cep As String)
        Dim ds As DataSet
        Dim resultado As String
        Dim ht As System.Collections.Hashtable
        Try
            ds = New DataSet()
            ds.ReadXml("http://cep.republicavirtual.com.br/web_cep.php?cep=" + cep.Replace("-", "").Trim() + "&formato=xml")
            If Not IsNothing(ds) Then
                If (ds.Tables(0).Rows.Count > 0) Then
                    resultado = ds.Tables(0).Rows(0).Item("resultado").ToString()
                    ht = New Hashtable
                    Select Case resultado
                        Case ("1")
                            ht.Add("UF", ds.Tables(0).Rows(0).Item("uf").ToString().Trim())
                            ht.Add("cidade", ds.Tables(0).Rows(0).Item("cidade").ToString().Trim())
                            ht.Add("bairro", ds.Tables(0).Rows(0).Item("bairro").ToString().Trim())
                            ht.Add("tipologradouro", ds.Tables(0).Rows(0).Item("tipo_logradouro").ToString().Trim())
                            ht.Add("logradouro", ds.Tables(0).Rows(0).Item("logradouro").ToString().Trim())
                            ht.Add("tipo", 1)
                            txtrua.Text = ht("logradouro").ToString
                            txtcidade.Text = ht("cidade").ToString
                            txtestado.Text = ht("UF").ToString
                            txtbairro.Text = ht("bairro").ToString
                        Case ("2")
                            ht.Add("UF", ds.Tables(0).Rows(0).Item("uf").ToString().Trim())
                            ht.Add("cidade", ds.Tables(0).Rows(0).Item("cidade").ToString().Trim())
                            ht.Add("tipo", 2)
                        Case Else
                            ht.Add("tipo", 0)
                            txtrua.Text = ""
                            txtcidade.Text = ""
                            txtestado.Text = ""
                            txtbairro.Text = ""
                    End Select
                End If
            End If

        Catch ex As Exception
            Throw New Exception("Falha ao Buscar o Cep" & vbCrLf & ex.ToString)

        End Try
    End Sub

    Public Sub Incluir()
        Try

            If rdbtipofornecedor.SelectedIndex = -1 Then
                rdbtipofornecedor.Focus()
                Throw New Exception("Selecione o Tipo de fornecedor")
            End If
            If txtnomefornecedor.Text = "" Then
                txtnomefornecedor.Focus()
                Throw New Exception("Digite o Nome do Fornecedor")
            ElseIf txtemail.Text = "" Then
                txtemail.Focus()
                Throw New Exception("Digite o E-Mail")
            ElseIf valida.validaremail(txtemail.Text) = False Then
                txtemail.Focus()
                Throw New Exception("E-Mail Invalido")
            ElseIf txttelefone.Text = "" Then
                txttelefone.Focus()
                Throw New Exception("Digite o Telefone  do Fornecedor")
            ElseIf txtcontato.Text = "" Then
                txtcontato.Focus()
                Throw New Exception("Digite o Nome do Contato da Empresa")
            ElseIf txtcep.Text = "" Then
                txtcep.Focus()
                Throw New Exception("Digite o Cep do Fornecedor")
            ElseIf txtestado.Text = "" AndAlso txtcep.Text <> "" Then
                txtcep.Focus()
                Throw New Exception("Cep Invalido")
            ElseIf txtnumero.Text = "" Then
                txtnumero.Focus()
                Throw New Exception("Digite o Numero do Endereço do Fornecedor")
            End If

            If rdbtipofornecedor.SelectedItem.Value = Tipofornecedor.jurica Then
                If txtinscricaoestadual.Text = "" Then
                    txtinscricaoestadual.Focus()
                    Throw New Exception("Digite a Inscrição Estadual")

                ElseIf txtcnpj.Text = "" Then
                    txtcnpj.Focus()
                    Throw New Exception("Digite o CNPJ")

                ElseIf ValidaCNPJ(txtcnpj.Text) = False Then
                    txtcnpj.Focus()
                    Throw New Exception("CNPJ Invalido")

                End If

            Else
                If txtrg.Text = "" Then
                    txtrg.Focus()
                    Throw New Exception("Digite o Rg")
                ElseIf txtcpf.Text = "" Then
                    txtcpf.Focus()
                    Throw New Exception("Digite o CPF")
                ElseIf ValidaCPF(txtcpf.Text) = False Then
                    txtcpf.Focus()
                    Throw New Exception("CPF invalido")
                End If
            End If
            If Request.QueryString("id") <> "" Then
                entidade.id = Convert.ToInt32(Request.QueryString("id").ToString)
            Else
                entidade.id = 0
            End If

            ' entidade.idusuario = Convert.ToInt32(Application("id"))
            util.getusuarios(lista)
            entidade.idusuario = Convert.ToInt32(lista.Item(0).ToString())
            entidade.nomefornecedor = txtnomefornecedor.Text
            entidade.tipofornecedor = rdbtipofornecedor.SelectedItem.Text
            entidade.email = txtemail.Text
            entidade.telefone = txttelefone.Text
            entidade.celular = txtceluar.Text
            entidade.rg = txtrg.Text
            entidade.cpf = txtcpf.Text
            entidade.Inscricao_estadual = txtinscricaoestadual.Text
            entidade.cnpj = txtcnpj.Text
            entidade.cep = txtcep.Text
            entidade.estado = txtestado.Text
            entidade.cidade = txtcidade.Text
            entidade.rua = txtrua.Text
            entidade.numero = txtnumero.Text
            entidade.contato = txtcontato.Text
            entidade.bairro = txtbairro.Text

            dal.insert_update(entidade)
            If Request.QueryString("id") = "" Then
                Throw New Exception("Cadastro de Fornecedor Incluido com Sucesso")
            Else
                Throw New Exception("Cadastro de Fornecedor Alterado com Sucesso")
            End If
        Catch ex As Exception
            Throw New Exception(ex.Message)
        End Try
    End Sub

    Public Sub DELETE()
        Try
            If Request.QueryString("id") <> "" Then
                entidade.id = Convert.ToInt32(Request.QueryString("id").ToString)
            Else
                entidade.id = 0
            End If
            dal.delete(entidade)
            Throw New Exception("Cadastro de Fornecedor Excluido com Sucesso")
        Catch ex As Exception
            Throw New Exception(ex.Message)
        End Try
    End Sub


    Private dadosArray() As String = {"111.111.111-11", "222.222.222-22", "333.333.333-33", "444.444.444-44", _
                                              "555.555.555-55", "666.666.666-66", "777.777.777-77", "888.888.888-88", "999.999.999-99"}

    Private Const msgErro As String = "Dados Inválidos"
    Private bValida As Boolean
    Private sCPF As String
    Private sCNPJ As String

    Private Function ValidaCPF(ByVal CPF As String) As Boolean
        Dim i, x, n1, n2 As Integer
        CPF = CPF.Trim
        For i = 0 To dadosArray.Length - 1
            If CPF.Length <> 14 Or dadosArray(i).Equals(CPF) Then
                Return False
            End If
        Next
        'remove a maskara
        CPF = CPF.Substring(0, 3) + CPF.Substring(4, 3) + CPF.Substring(8, 3) + CPF.Substring(12)
        For x = 0 To 1
            n1 = 0
            For i = 0 To 8 + x
                n1 = n1 + Val(CPF.Substring(i, 1)) * (10 + x - i)
            Next
            n2 = 11 - (n1 - (Int(n1 / 11) * 11))
            If n2 = 10 Or n2 = 11 Then n2 = 0
            If n2 <> Val(CPF.Substring(9 + x, 1)) Then
                Return False
            End If
        Next
        Return True

    End Function
    Private Function ValidaCNPJ(ByVal CNPJ As String) As Boolean
        Dim i As Integer
        Dim valida As Boolean
        CNPJ = CNPJ.Trim
        For i = 0 To dadosArray.Length - 1
            If CNPJ.Length <> 18 Or dadosArray(i).Equals(CNPJ) Then
                Return False
            End If
        Next
        'removE a maskara
        CNPJ = CNPJ.Substring(0, 2) + CNPJ.Substring(3, 3) + CNPJ.Substring(7, 3) + CNPJ.Substring(11, 4) + CNPJ.Substring(16)
        valida = efetivaValidacao(CNPJ)
        If valida Then
            ValidaCNPJ = True
        Else
            ValidaCNPJ = False
        End If
    End Function


    Private Function efetivaValidacao(ByVal cnpj As String)
        Dim Numero(13) As Integer
        Dim soma As Integer
        Dim i As Integer
        Dim resultado1 As Integer
        Dim resultado2 As Integer
        For i = 0 To Numero.Length - 1
            Numero(i) = CInt(cnpj.Substring(i, 1))
        Next
        soma = Numero(0) * 5 + Numero(1) * 4 + Numero(2) * 3 + Numero(3) * 2 + Numero(4) * 9 + Numero(5) * 8 + Numero(6) * 7 + _
                   Numero(7) * 6 + Numero(8) * 5 + Numero(9) * 4 + Numero(10) * 3 + Numero(11) * 2
        soma = soma - (11 * (Int(soma / 11)))
        If soma = 0 Or soma = 1 Then
            resultado1 = 0
        Else
            resultado1 = 11 - soma
        End If
        If resultado1 = Numero(12) Then
            soma = Numero(0) * 6 + Numero(1) * 5 + Numero(2) * 4 + Numero(3) * 3 + Numero(4) * 2 + Numero(5) * 9 + Numero(6) * 8 + _
                         Numero(7) * 7 + Numero(8) * 6 + Numero(9) * 5 + Numero(10) * 4 + Numero(11) * 3 + Numero(12) * 2
            soma = soma - (11 * (Int(soma / 11)))
            If soma = 0 Or soma = 1 Then
                resultado2 = 0
            Else
                resultado2 = 11 - soma
            End If
            If resultado2 = Numero(13) Then
                Return True
            Else
                Return False
            End If
        Else
            Return False
        End If
    End Function
#End Region




#Region "Eventos do Form"


    Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load

        If Not IsPostBack Then
           
            Dim paginavisivel As Boolean
            paginavisivel = util.validarpagina(6)
            If Not paginavisivel Then
                FormsAuthentication.SignOut()
                Response.Redirect(ResolveUrl("~/Login.aspx"))
            End If

            S = ""
            gettipofornecedor()
            If Request.QueryString("id") <> "" Then
                editar(sender, e)
            Else
                pnltipofornecedor.Enabled = True
            End If


        End If
    End Sub
    
    Private Sub rdbtipofornecedor_SelectedIndexChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles rdbtipofornecedor.SelectedIndexChanged
        If rdbtipofornecedor.SelectedItem.Value = Tipofornecedor.fisica Then
            pnlcadastrofornecedor.Visible = True
            pnlendereco.Visible = True
            pnltipofisico.Visible = True
            pnljurudico.Visible = False
            txtnomefornecedor.Focus()

        End If

        If rdbtipofornecedor.SelectedItem.Value = Tipofornecedor.jurica Then
            pnlcadastrofornecedor.Visible = True
            pnlendereco.Visible = True
            pnljurudico.Visible = True
            pnltipofisico.Visible = False
            txtnomefornecedor.Focus()

        End If
    End Sub
    Protected Sub imgvoltar_Click(ByVal sender As Object, ByVal e As System.Web.UI.ImageClickEventArgs) Handles imgvoltar.Click
        Response.Redirect(ResolveUrl("~/adm/FornecedorLista.aspx"))
    End Sub



    Protected Sub txtcep_TextChanged(ByVal sender As Object, ByVal e As EventArgs) Handles txtcep.TextChanged
        BuscaCep(txtcep.Text)
        txtnumero.Focus()
        System.Threading.Thread.Sleep(3000)
    End Sub
 




    Protected Sub ckeckbutox1_CheckedChanged(ByVal sender As Object, ByVal e As EventArgs) Handles ckeckbutox1.CheckedChanged
        Dim i As Integer

        If txtinscricaoestadual.Enabled = False Then
            i -= 1
        Else
            i += 1
        End If

        While i > 0

            If Request.QueryString("id") <> "" Then
                S = txtinscricaoestadual.Text
            End If
            ckeckbutox1.Checked = True
            txtinscricaoestadual.Text = "ISENTO"
            txtinscricaoestadual.Enabled = False
            ckeckbutox1.Focus()

            i -= 1
            Exit Sub
        End While
        If Not S Is Nothing Then
            txtinscricaoestadual.Text = S
        Else
            txtinscricaoestadual.Text = ""
        End If

        ckeckbutox1.Checked = False

        txtinscricaoestadual.Enabled = True
        ckeckbutox1.Focus()
    End Sub
    Protected Sub imggravar_Click(ByVal sender As Object, ByVal e As System.Web.UI.ImageClickEventArgs) Handles imggravar.Click
        pnl1.Visible = False
        Try
            Incluir()
        Catch ex As Exception
            pnl1.Visible = True
            lblerro.Text = ex.Message
        End Try
    End Sub
    Protected Sub Imagenovo_Click(ByVal sender As Object, ByVal e As System.Web.UI.ImageClickEventArgs) Handles Imagenovo.Click
        Response.Redirect(ResolveUrl("~/adm/CadastroFornecedor.aspx"))
    End Sub
    Protected Sub imgexcluir_Click(ByVal sender As Object, ByVal e As System.Web.UI.ImageClickEventArgs) Handles imgexcluir.Click
        pnl1.Visible = False
        Try
            DELETE()
        Catch ex As Exception
            pnl1.Visible = True
            lblerro.Text = ex.Message
        End Try
    End Sub

   

#End Region












    
End Class